<?php
const CRC_Polynomial = 0xEDB88320;
$CRC_table = array();
function unsigned_shift($i, $n) {
    $unsigned = sprintf('%u', $i);
    return $unsigned >> $n;
}
function charCodeAt($str, $index) {
    return hexdec(bin2hex($str[$index]));
}
function create_table() {
    $CRC_reg;
    $i;
    $j;
    for ($i = 0;$i < 256;++$i) {
        $CRC_reg = $i;
        for ($j = 0;$j < 8;++$j) {
            if (($CRC_reg & 1) !== 0) {
                $CRC_reg = CRC_Polynomial ^ unsigned_shift($CRC_reg, 1);
            } else {
                $CRC_reg = unsigned_shift($CRC_reg, 1);
            }
        }
        $GLOBALS['CRC_table'][$i] = $CRC_reg;
    }
}
function CRC_32($input) {
    if (gettype($input) !== 'string') {
        $input = (string)$input;
    }
    $CRC_start = 0xFFFFFFFF;
    $len = strlen($input);
    $index;
    for ($i = 0;$i < $len;++$i) {
        $index = ($CRC_start ^ charCodeAt($input, $i)) & 0xff;
        $CRC_start = unsigned_shift($CRC_start, 8) ^ $GLOBALS['CRC_table'][$index];
    }
    return $CRC_start;
}
function CRC_32_last_index($input) {
    if (gettype($input) !== 'string') {
        $input = (string)$input;
    }
    $CRC_start = 0xFFFFFFFF;
    $len = strlen($input);
    $index;
    for ($i = 0;$i < $len;++$i) {
        $index = ($CRC_start ^ charCodeAt($input, $i)) & 0xff;
        $CRC_start = unsigned_shift($CRC_start, 8) ^ $GLOBALS['CRC_table'][$index];
    }
    return $index;
}
function get_CRC_index($input) {
    for ($i = 0;$i < 256;$i++) {
        if (unsigned_shift($GLOBALS['CRC_table'][$i], 24) === $input) {
            return $i;
        }
    }
    return -1;
}
function deepCheck($input, $index) {
    $tc;
    $str = '';
    $hash = CRC_32($input);
    $tc = $hash & 0xff ^ $index[2];
    if (!($tc <= 57 && $tc >= 48)) {
        return [0];
    }
    $str.= $tc - 48;
    $hash = $GLOBALS['CRC_table'][$index[2]] ^ unsigned_shift($hash, 8);
    $tc = $hash & 0xff ^ $index[1];
    if (!($tc <= 57 && $tc >= 48)) {
        return [0];
    }
    $str.= $tc - 48;
    $hash = $GLOBALS['CRC_table'][$index[1]] ^ unsigned_shift($hash, 8);
    $tc = $hash & 0xff ^ $index[0];
    if (!($tc <= 57 && $tc >= 48)) {
        return [0];
    }
    $str.= $tc - 48;
    return [1, $str];
}
function main_($input) {
    create_table();
    $index = array();
    $ht = intval($input, 16) ^ 0xffffffff;
    $snum;
    $i;
    $last_index;
    $deepCheckData;
    for ($i = 3;$i >= 0;$i--) {
        $index[3 - $i] = get_CRC_index(unsigned_shift($ht, ($i * 8)));
        $snum = $GLOBALS['CRC_table'][$index[3 - $i]];
        $ht = $ht ^ unsigned_shift($snum, ((3 - $i) * 8));
    }
    for ($i = 0;$i < 100000000;$i++) {
        $last_index = CRC_32_last_index($i);
        if ($last_index === $index[3]) {
            $deepCheckData = deepCheck($i, $index);
            if ($deepCheckData[0]) {
                break;
            }
        }
    }
    if ($i === 100000000) {
        return -1;
    }
    return "{$i}{$deepCheckData[1]}";
}
echo main_("fb9066d7");
